package com.ddpt.gateway.filter.config;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Set;

/**
 * 限制条件配置
 */
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "limit")
public class LimitConfiguration {

    private boolean enableSecret;

    private String secretKey;

    /**
     * ip黑名单
     */
    private Set<String> blackIps;

    /**
     * ip白名单
     */
    private Set<String> whiteIps;

    /**
     * ip被限制后返回的http状态码
     */
    private Integer ipLimitHttpStatus;

    /**
     * ip被限制后返回的文案
     */
    private String ipLimitMsg;

    /**
     * 需要限制ip的url
     */
    private Set<String> ipUrl;

    /**
     * 不需要限制ip的url
     */
    private Set<String> notIpUrl;

    /**
     * 是否开启请求头签名验证
     */
    private boolean enableSign;

    /**
     * 请求头验签失败返回的http状态码
     */
    private Integer signHttpStatus;

    /**
     * 请求头验签失败返回的文案
     */
    private String signMsg;

    /**
     * 允许的客户端时间和服务器时间戳误差(秒)
     */
    private Integer signDelaySecond;

    /**
     * 需要进行验签的url
     */
    private Set<String> signUrl;

    /**
     * 不需要进行验签的url
     */
    private Set<String> notSignUrl;

    /**
     * 是否开启接口限流(同一token访问相同url需要等待上次完成)
     */
    private boolean enableLimit;

    /**
     * 被限流后返回的http状态码
     */
    private Integer limitHttpStatus;

    /**
     * 被限流后返回的文案
     */
    private String limitMsg;

    /**
     * 要限流的url
     */
    private Set<String> limitUrl;

    /**
     * 不需要进行限流的url
     */
    private Set<String> notLimitUrl;
}
